import { DebugUtils } from './advanced/debug'
import { PerformanceUtils } from './advanced/performance'
import { AsyncUtils } from './base/async'
import { ConfigUtils } from './base/config'
import { DomUtils } from './base/dom'
import { EnvironmentUtils } from './base/environment'
import { ErrorUtils } from './base/error'
import { FunctionUtils } from './base/function'
import { ObserverUtils } from './base/observer'
import { ResourceUtils } from './base/resource'
import { SetUtils } from './base/set'
import { StringUtils } from './base/string'
import { ServiceAlertUtils } from './base/swal'
import { TimeUtils } from './base/time'
import { FileUtils } from './browser/file'
import { PlatformUtils } from './browser/platform'
import { SelectionUtils } from './browser/selection'
import { StorageUtils } from './browser/storage'
import { ThemeUtils } from './browser/theme'
import { UrlUtils } from './browser/url'
import { ClipboardUtils } from './ui/clipboard'
import { ElementUtils } from './ui/element'
import { EventUtils } from './ui/event'
import { IconUtils } from './ui/icon'
import { PageUtils } from './ui/page'
import { ShadowStyleUtils } from './ui/shadow_style'
import { StyleUtils } from './ui/style'
import { SvgUtils } from './ui/svg'
import { SyntaxUtils } from './ui/syntax'
import { TableUtils } from './ui/table'

/**
 * 综合工具包 - 提供分类的工具方法
 */
export class ToolKit {
  // 基础工具
  static readonly config: typeof ConfigUtils = ConfigUtils
  static readonly dom: typeof DomUtils = DomUtils
  static readonly string: typeof StringUtils = StringUtils
  static readonly set: typeof SetUtils = SetUtils
  static readonly time: typeof TimeUtils = TimeUtils
  static readonly async: typeof AsyncUtils = AsyncUtils
  static readonly func: typeof FunctionUtils = FunctionUtils
  static readonly environment: typeof EnvironmentUtils = EnvironmentUtils
  static readonly error: typeof ErrorUtils = ErrorUtils
  static readonly serviceAlert: typeof ServiceAlertUtils = ServiceAlertUtils
  static readonly resource: typeof ResourceUtils = ResourceUtils
  static readonly observer: typeof ObserverUtils = ObserverUtils

  // 浏览器相关工具
  static readonly browser: {
    url: typeof UrlUtils
    platform: typeof PlatformUtils
    theme: typeof ThemeUtils
    storage: typeof StorageUtils
    file: typeof FileUtils
    selection: typeof SelectionUtils
  } = {
    url: UrlUtils,
    platform: PlatformUtils,
    theme: ThemeUtils,
    storage: StorageUtils,
    file: FileUtils,
    selection: SelectionUtils,
  }

  // UI 相关工具
  static readonly ui: {
    style: typeof StyleUtils
    shadow: typeof ShadowStyleUtils
    page: typeof PageUtils
    element: typeof ElementUtils
    svg: typeof SvgUtils
    icon: typeof IconUtils
    table: typeof TableUtils
    clipboard: typeof ClipboardUtils
    syntax: typeof SyntaxUtils
    event: typeof EventUtils
  } = {
    style: StyleUtils,
    shadow: ShadowStyleUtils,
    page: PageUtils,
    element: ElementUtils,
    svg: SvgUtils,
    icon: IconUtils,
    table: TableUtils,
    clipboard: ClipboardUtils,
    syntax: SyntaxUtils,
    event: EventUtils,
  }

  // 高级工具
  static readonly advanced: {
    debug: typeof DebugUtils
    performance: typeof PerformanceUtils
  } = {
    debug: DebugUtils,
    performance: PerformanceUtils,
  }

  // 快捷方法别名
}
